import Vue from 'vue';
let vm = new Vue();

// import Config from './config'

// import { JSEncrypt } from 'jsencrypt'
// import { JSEncrypt } from 'encryptlong'

export default {
    message(title){
        vm.$message(title);
    },
    error(title){
        vm.$message.error(title);
    },
    success(title){
        vm.$message({
            message: title,
            type: 'success'
        });
    },
    warning(title){
        vm.$message({
            message: title,
            type: 'warning'
        });
    },
    mustLetter(rule, value, callback){
        if (value === '') {
            return callback(new Error('不能为空'));
        }

        let _v = /[a-z0-9]$/;
        if (!_v.test(value)) {
            return callback(new Error('必须是小写字母或数字'));
        } else {
            return callback();
        }
    },
    mustNumber(rule, value, callback){
        if (value === '') {
            return callback(new Error('不能为空'));
        }

        let _v = /(^[1-9]\d*$)/;
        if (!_v.test(value)) {
            return callback(new Error('必须是整数'));
        } else {
            return callback();
        }
    },
    biggerZero(rule, value, callback){
        if (value === '') {
            return callback(new Error('不能为空'));
        }

        if (!Number.isInteger(value) && typeof value !== 'number') {
            return callback(new Error('请输入数字值'));
        } else {
            if (value < 0) {
                return callback(new Error('必须>=0'));
            } else {
                return callback();
            }
        }
    },
    biggerZero2(rule, value, callback){
        if (value === '') {
            return callback(new Error('不能为空'));
        }

        // console.log(typeof value);
        if (!Number.isInteger(value) && typeof value !== 'number') {
            return callback(new Error('请输入数字值'));
        } else {
            if (value <= 0) {
                return callback(new Error('必须大于0'));
            } else {
                return callback();
            }
        }
    },
    rulePercent(rule, value, callback){
        if (value === '') {
            return callback(new Error('不能为空'));
        }

        let _v = /((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/;

        if (!_v.test(value)) {
            return callback(new Error('请输入数字值'));
        } else {
            if (parseFloat(value) < 0 || parseFloat(value) > 100) {
                return callback(new Error('必须>=0 并且 <= 100'));
            } else {
                return callback();
            }
        }
    },
    rulePriceNotZero(rule, value, callback){
        if (value === '') {
            return callback(new Error('不能为空'));
        }

        let _v = /((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/;

        if (!_v.test(value)) {
            return callback(new Error('请输入数字值'));
        } else {
            if (parseFloat(value) <= 0) {
                return callback(new Error('必须大于0'));
            } else {
                return callback();
            }
        }
    },
    rulePriceCanZero(rule, value, callback){
        if (value === '') {
            return callback(new Error('不能为空'));
        }

        let _v = /((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/;

        if (!_v.test(value)) {
            return callback(new Error('请输入数字值'));
        } else {
            if (parseFloat(value) < 0) {
                return callback(new Error('必须大于0'));
            } else {
                return callback();
            }
        }
    },
    calcDescartes (array) {

        let res = [];
        let _arr = [];
        let skus = [];

        for(let i=0;i < array.length;i++){
            console.log(array[i].spec_value.length);
            if(array[i].spec_value.length > 0) {
                _arr.push(array[i].spec_value);
            }
        }


        if(_arr.length > 0) {
            if (_arr.length < 2) {

                for (let i = 0; i < _arr[0].length; i++) {
                    res.push([_arr[0][i]]);
                }
            } else {
                res = [].reduce.call(_arr, function (col, set) {
                    let _res = [];

                    col.forEach(function (c) {
                        set.forEach(function (s) {
                            let t = [].concat(Array.isArray(c) ? c : [c]);
                            t.push(s);
                            _res.push(t);

                        })
                    });

                    return _res;
                });
            }



            for (let k = 0; k < res.length; k++) {
                let _sku = [];
                for (let j = 0; j < res[k].length; j++) {
                    _sku.push({
                        id: array[j].id,
                        name: array[j].name,
                        value_id: res[k][j].id,
                        value_name: res[k][j].name
                    });
                }
                skus.push({spec: _sku, price: 0.00, stock: 0, code: '', img: ''});
            }

            return skus;
        }

        return skus;
    },
    checkParams(rule,val){
        for(let item in rule){
            if(rule[item].check === 'require'){
                if(this.isUndefined(val[item].trim())){
                    console.error('param '+item+' must be require!');
                    return false;
                }
            }

            if(typeof val[item] !== rule[item].type && !this.isUndefined(val[item])){
                console.error('param '+item+' must be '+rule[item].type+'!');
                return false;
            }
        }
        return true;
    },
    formatPrice(price){
        return (Math.floor(Number(price) * 100) / 100).toFixed(2);
    },
    isUndefined(variable) {
        return (typeof variable == 'undefined' || variable === null || variable === '');
    },
    sessionSet(key,val){
        if((typeof val === 'string' || typeof val === 'number') && typeof key === 'string') {
            return sessionStorage.setItem(key, val);
        }else{
            console.error('value & key must be a string!');
        }
        return false;
    },
    sessionGet(key){
        if(typeof key === 'string'){
            return sessionStorage.getItem(key);
        }else{
            console.error('key must be a string!');
        }
        return null;
    },
    sessionDel(key){
        if(typeof key === 'string'){
            return sessionStorage.removeItem(key);
        }else{
            console.error('key must be a string!');
        }
        return false;
    },
    sessionClear(){
        return sessionStorage.clear();
    },
    copy(data){
        let oInput = document.createElement('input');
        oInput.value = data;
        oInput.classList.add('copy-input');
        document.body.appendChild(oInput);
        vm.$nextTick(() => {
            oInput.select(); // 选择对象;
            console.log(oInput.value);
            document.execCommand("Copy"); // 执行浏览器复制命令
            vm.$message({
                message: '复制成功',
                type: 'success'
            });
            oInput.remove();
        });
    },
    // rsaEncode(content){
    //
    //     // let encryptor = new JSEncrypt()
    //     //
    //     // encryptor.setPublicKey(key)
    //     //
    //     // let cptData = encryptor.encryptLong(data)
    //     //
    //     // return cptData
    //
    //     let encrypeJs = new JSEncrypt();
    //     encrypeJs.setPublicKey(Config.publicKey);
    //     // return encrypeJs.encryptLong(content);
    //     return encrypeJs.encrypt(content);
    // },
    // rsaDecode(content){
    //     let encrypeJs = new JSEncrypt();
    //     encrypeJs.setPublicKey(Config.publicKey);
    //     return encrypeJs.decrypt(content);
    // }
}
